<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml">
    
    <f:metadata>
        <f:event type="preRenderView" 
                 listener="#{restauracionBean.validarAcceso}"/>
    </f:metadata>
    
    <ui:define name="cabecera">
        <title>Gestión de Restauraciones</title>
        <link rel="shortcut icon"  
              href="/resources/imagenes/favicon.ico" />
        <h:outputScript name="lenguaje.js" 
                        library="javascript"/>
    </ui:define>
    <ui:define name="contenido">
        <center>
            <!-- Tabla de restauraciones -->
            <p:panel id="restauracionPnl" 
                     header="Listado de Restauraciones" 
                     styleClass="contenido">
                <h:form id="tablaRestauracionFrm">
                     <p:dataTable id="tablaRestauracionDtb" 
                                  var="restauracion" 
                                  resizableColumns="true" 
                                  paginator="true" 
                                  paginatorPosition="bottom" 
                                  rows="10"
                                  selectionMode="single" 
                                  rowKey="#{restauracion.especimen.codigoespecimen}"
                                  value="#{restauracionBean.listaEntidades}" 
                                  style="text-align: center"
                                  emptyMessage="No hay registros disponibles.">
                         <p:column filterBy="#{restauracion.especimen.codigoespecimen}"
                                   sortBy="#{restauracion.especimen.codigoespecimen}"
                                   headerText="Espécimen" 
                                   filterMatchMode="contains"
                                   style="font-size: 110%">
                             <h:outputText value="#{restauracion.especimen.codigoespecimen}"  />
                         </p:column>
                         <p:column filterBy="#{restauracion.autoriza}" 
                                   sortBy="#{restauracion.autoriza}"
                                   headerText="Autoriza" 
                                   filterMatchMode="contains"
                                   style="font-size: 110%">       
                            <h:outputText value="#{restauracion.autoriza}"  />
                         </p:column>
                         <p:column filterBy="#{restauracion.realiza}" 
                                   sortBy="#{restauracion.realiza}"   
                                   headerText="Realiza" 
                                   filterMatchMode="contains"
                                   style="font-size: 110%">       
                            <h:outputText value="#{restauracion.realiza}"  />
                         </p:column>
                         <p:column filterBy="#{restauracion.recibe}" 
                                   sortBy="#{restauracion.recibe}"   
                                   headerText="Recibe" 
                                   filterMatchMode="contains"
                                   style="font-size: 110%">       
                            <h:outputText value="#{restauracion.recibe}"  />
                         </p:column>
                         <p:column filterBy="#{restauracion.fechainicial}" 
                                   sortBy="#{restauracion.fechainicial}"
                                   headerText="Inicio" 
                                   filterMatchMode="contains"
                                   style="font-size: 110%">
                             <h:outputText value="#{restauracion.fechainicial}">
                                 <f:convertDateTime pattern="dd/MM/yyyy"/>
                             </h:outputText>
                         </p:column>
                         <p:column filterBy="#{restauracion.fechafinal}" 
                                   sortBy="#{restauracion.fechafinal}"
                                   headerText="Finalización" 
                                   filterMatchMode="contains"
                                   style="font-size: 110%">
                             <h:outputText value="#{restauracion.fechafinal}">
                                 <f:convertDateTime pattern="dd/MM/yyyy"/>
                             </h:outputText>
                         </p:column>
                         <p:column filterBy="#{restauracion.observaciones}" 
                                   sortBy="#{restauracion.observaciones}"   
                                   headerText="Observaciones" 
                                   filterMatchMode="contains"
                                   style="font-size: 110%">       
                            <h:outputText value="#{restauracion.observaciones}"  />
                         </p:column>
                         <p:column headerText="Modificar"
                                   style="font-size: 110%"
                                   rendered="#{sesionBean.verificarPermiso('modificar','restauracion')}">
                             <center>
                                 <p:commandButton id="modificarBtn" 
                                                  title="Modificar" 
                                                  icon="ui-icon-pencil"
                                                  actionListener="#{restauracionBean.prepararModificacion(restauracion)}"
                                                  update=":guardarRestauracionFrm:guardarRestauracionPnl"
                                                  oncomplete="guardarRestauracionWgt.show()">
                                     <f:setPropertyActionListener target="#{restauracionBean.operacionActual}"
                                                                  value="ACTUALIZACION" />
                                 </p:commandButton>
                             </center>
                         </p:column>
                         <f:facet name="footer">
                             <p:commandButton id="agregarBtn" 
                                              value="Nueva Restauración"
                                              actionListener="#{restauracionBean.prepararAdicion}"
                                              update=":guardarRestauracionFrm:guardarRestauracionPnl" 
                                              oncomplete="guardarRestauracionWgt.show()" 
                                              icon="ui-icon-document" 
                                              title="Agregar nueva restauración"
                                              style="float:left; font-size: 110%"
                                              rendered="#{sesionBean.verificarPermiso('agregar','restauracion')}">
                                 <f:setPropertyActionListener target="#{restauracionBean.operacionActual}" 
                                                              value="INSERCION" />
                             </p:commandButton>
                         </f:facet>
                     </p:dataTable>              
                </h:form>
            </p:panel>
        </center>
    </ui:define>
    <ui:define name="extra">
        <!-- Dialogo para ingresar y modificar las restauraciones -->
        <p:dialog id="guardarRestauracionDlg" 
                  header="Datos de Restauración" 
                  widgetVar="guardarRestauracionWgt"
                  resizable="false" 
                  modal="true"
                  closable="false"
                  draggable="false"
                  style="font-size: 85%">
            <h:form id="guardarRestauracionFrm">
                
                <p:messages id="mensaje" 
                            globalOnly="true" 
                            redisplay="false"
                            autoUpdate="true"/>
                
                <h:panelGrid id="guardarRestauracionPnl" 
                             columns="3" 
                             style="margin-bottom:10px; font-size: 85%">
                    <h:outputLabel for="codigoespecimenTxt" 
                                   value="Espécimen: " /> 
                    <p:column>
                        <p:selectOneMenu id="codigoespecimenTxt" 
                                         filter="true" 
                                         filterMatchMode="contains"
                                         value="#{restauracionBean.entidad.especimen}"
                                         rendered="#{restauracionBean.operacionActual == 'INSERCION'}"
                                         required="true">
                            <f:selectItem itemLabel="Seleccione"
                                          itemValue="" />
                            <f:selectItems value="#{restauracionBean.itemsEspecimenes}"/>
                            <f:converter converterId="especimenConverter" />
                        </p:selectOneMenu>
                        <h:outputText value="#{restauracionBean.entidad.especimen.codigoespecimen}"
                                      rendered="#{restauracionBean.operacionActual == 'ACTUALIZACION'}"/>
                    </p:column>
                    <p:panel style="border:none; font-size: 85%">
                        <p:tooltip for="codigoespecimenTxt" 
                                   showEvent="focus" 
                                   hideEvent="blur" 
                                   rendered="#{restauracionBean.tieneErrores('guardarRestauracionFrm:codigoespecimenTxt')}">
                            <p:message id="codigoespecimenMsg" 
                                       for="codigoespecimenTxt"
                                       display="text" />
                        </p:tooltip>
                    </p:panel>
                    <h:outputLabel for="autorizaTxt"
                                   value="Autoriza: " 
                                   rendered="#{restauracionBean.operacionActual == 'INSERCION'}"/>
                    <p:inputText id="autorizaTxt"
                                 title="Obligatorio"
                                 value="#{restauracionBean.entidad.autoriza}" 
                                 rendered="#{restauracionBean.operacionActual == 'INSERCION'}">
                                 <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                 <f:attribute name="formato" value="Solo Caracteres" />
                                 <f:validator validatorId="regexValidator" />
                   </p:inputText>
                    <p:panel style="border:none; font-size: 85%" 
                             rendered="#{restauracionBean.operacionActual == 'INSERCION'}">
                        <p:tooltip for="autorizaTxt" 
                                   showEvent="focus" 
                                   hideEvent="blur" 
                                   rendered="#{restauracionBean.tieneErrores('guardarRestauracionFrm:autorizaTxt')}">
                            <p:message id="autorizaMsg" 
                                       for="autorizaTxt"
                                       display="text" />
                        </p:tooltip>
                    </p:panel>
                    <h:outputLabel for="realizaTxt"
                                   value="Realiza: " 
                                   rendered="#{restauracionBean.operacionActual == 'INSERCION'}"/>
                    <p:inputText id="realizaTxt"
                                 title="Obligatorio"
                                 value="#{restauracionBean.entidad.realiza}" 
                                 rendered="#{restauracionBean.operacionActual == 'INSERCION'}">
                                 <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                 <f:attribute name="formato" value="Solo Caracteres" />
                                 <f:validator validatorId="regexValidator" />
                   </p:inputText>
                    <p:panel style="border:none; font-size: 85%" 
                             rendered="#{restauracionBean.operacionActual == 'INSERCION'}">
                        <p:tooltip for="realizaTxt" 
                                   showEvent="focus" 
                                   hideEvent="blur" 
                                   rendered="#{restauracionBean.tieneErrores('guardarRestauracionFrm:realizaTxt')}">
                            <p:message id="realizaMsg" 
                                       for="realizaTxt"
                                       display="text" />
                        </p:tooltip>
                    </p:panel>
                    <h:outputLabel for="recibeTxt" 
                                   value="Recibe: " 
                                   rendered="#{restauracionBean.operacionActual == 'ACTUALIZACION'}"/>
                    <p:inputText id="recibeTxt" 
                                 title="Obligatorio"
                                 value="#{restauracionBean.entidad.recibe}"
                                 rendered="#{restauracionBean.operacionActual == 'ACTUALIZACION'}">
                                 <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                 <f:attribute name="formato" value="Solo Caracteres" />
                                 <f:validator validatorId="regexValidator" />
                   </p:inputText>
                    <p:panel style="border:none; font-size: 85%" 
                             rendered="#{restauracionBean.operacionActual == 'ACTUALIZACION'}">
                        <p:tooltip for="recibeTxt" 
                                   showEvent="focus" 
                                   hideEvent="blur" 
                                   rendered="#{restauracionBean.tieneErrores('guardarRestauracionFrm:recibeTxt')}">
                            <p:message id="recibeMsg" 
                                       for="recibeTxt"
                                       display="text" />
                        </p:tooltip>
                    </p:panel>
                    <h:outputLabel for="fechainicialTxt"
                                   value="Fecha de Realización: " 
                                   rendered="#{restauracionBean.operacionActual == 'INSERCION'}"/>
                    <p:calendar id="fechainicialTxt" 
                                value="#{restauracionBean.entidad.fechainicial}"
                                mode="popup" 
                                pattern="dd/MM/yyyy" 
                                title="Elija una fecha"
                                required="true"
                                navigator="true"
                                maxdate="today();"
                                locale="es"
                                rendered="#{restauracionBean.operacionActual == 'INSERCION'}"/>
                    <p:panel style="border:none; font-size: 85%" 
                             rendered="#{restauracionBean.operacionActual == 'INSERCION'}">
                        <p:tooltip for="fechainicialTxt" 
                                   showEvent="focus" 
                                   hideEvent="blur" 
                                   rendered="#{restauracionBean.tieneErrores('guardarRestauracionFrm:fechainicialTxt')}">
                            <p:message id="fechainicialMsg" 
                                       for="fechainicialTxt"
                                       display="text" />
                        </p:tooltip>
                    </p:panel>
                    <h:outputLabel for="fechafinalTxt" 
                                   value="Fecha de Finalización: " 
                                   rendered="#{restauracionBean.operacionActual == 'ACTUALIZACION'}"/>
                    <p:calendar id="fechafinalTxt" 
                                value="#{restauracionBean.entidad.fechafinal}"
                                mode="popup" 
                                pattern="dd/MM/yyyy" 
                                required="true"
                                navigator="true"
                                title="Elija una fecha"
                                mindate="#{restauracionBean.entidad.fechainicial}"
                                maxdate="today();"
                                locale="es"
                                rendered="#{restauracionBean.operacionActual == 'ACTUALIZACION'}"/>
                    <p:panel style="border:none; font-size: 85%"
                             rendered="#{restauracionBean.operacionActual == 'ACTUALIZACION'}">
                        <p:tooltip for="fechafinalTxt" 
                                   showEvent="focus" 
                                   hideEvent="blur" 
                                   rendered="#{restauracionBean.tieneErrores('guardarRestauracionFrm:fechafinalTxt')}">
                            <p:message id="fechafinalMsg" 
                                       for="fechafinalTxt"
                                       display="text" />
                        </p:tooltip>
                    </p:panel>
                    <p:column>
                        <h:outputLabel for="observacionesTxt" 
                                       value="Observaciones:" />
                        <br/>
                        <h:outputText id="contador" 
                                      style="font-size: 80%"/>
                    </p:column>
                    <p:inputTextarea id="observacionesTxt" 
                                    value="#{restauracionBean.entidad.observaciones}"
                                    autoResize="false"
                                    title="Opcional"
                                    counter="contador"
                                    counterTemplate="Restan {0} caracteres." 
                                    maxlength="1000"/>
                    <p:panel style="border:none; font-size: 85%">                  
                    </p:panel> 
                </h:panelGrid>
                <p:separator  />
                <br/>
                <p:commandButton id="guardarBtn" 
                                    actionListener="#{restauracionBean.guardarEntidad}" 
                                    oncomplete="if ( !args.validationFailed ) 
                                    guardarRestauracionWgt.hide()" 
                                    value="Guardar"
                                    update="@form, :tablaRestauracionFrm:tablaRestauracionDtb" 
                                    icon="ui-icon-disk"
                                    title="Guardar"
                                    style="float:right; font-size: 85%"/>
                <p:commandButton value="Cancelar" 
                                    actionListener="#{restauracionBean.revertirCambios}" 
                                    onclick="guardarRestauracionWgt.hide()" 
                                    icon="ui-icon-cancel" 
                                    title="Cancelar"
                                    immediate="false"
                                    style="float:right; font-size: 85%"/>
            </h:form>
        </p:dialog>
    </ui:define>
</ui:composition>